/*
 * Chiamata da un click su navigazione/ricerca.
 */
function UILoadQueryForm () {
	var url = (dirSpecials + "/query.xhtml");
	var am = new AjaxManager (url, null,
			function (req) {
				cm.set (req.responseXML);
				cm.clear ("scheda", "errore", "response");
				cm.redraw("messaggio");
				window.document.title="Ricerca";
			},
			function (req) {
				assert (url != null, "UILoadQueryForm: impossibile caricare la form di ricerca!");
			});
	am.get ();
}


/*
 * Chiamata da un click su navigazione/scrivi
 */
function UILoadSaveForm () {
	var url = (dirSpecials + "/save.xhtml");
	isNew=0;
	var am = new AjaxManager(url,
			null,
			function (req){
				epub = crescentina;
				cm.clear ("scheda", "errore", "response");
				req.responseXML.getElementsByTagName("select")[0].setAttribute("disabled", "disabled");
				cm.set (req.responseXML);
				cm.redraw ("messaggio");
				window.document.title="Crea una nuova scheda";
			},
			function (req){	
				assert (req.responseXML != null, "UILoadSaveForm: impossibile caricare la form di salvataggio!");
			});
	am.get ();
}


function UILoadSaveDerivedForm () {
	var url = (dirSpecials + "/save.xhtml");
	isNew=1;
	var meta = cm.get("scheda").getElementsByTagName ("metadati")[0];
	var am = new AjaxManager(url,
			null,
			function (req) {
				var xs = new XMLSerializer();
				var dom = req.responseXML;

				wid = meta.getElementsByTagName ("widentifier")[0].textContent;
				wcre = meta.getElementsByTagName ("wcreator")[0].textContent;
				wtit = meta.getElementsByTagName ("wtitle")[0].textContent;
				eso = meta.getElementsByTagName ("esource")[0].textContent;
				erel = meta.getElementsByTagName ("eidentifier")[0].textContent;
				epub = meta.getElementsByTagName ("epublisher")[0].textContent;

				// Copia metadati
				var input = dom.getElementsByTagName("input");
				input[0].setAttribute ("value", meta.getElementsByTagName ("etitle")[0].textContent);
				input[1].setAttribute ("value", nodeList2CommaLista (meta.getElementsByTagName ("ecreator")));
				input[2].setAttribute ("value", nodeList2CommaLista (meta.getElementsByTagName ("econtributor")));
				input[3].setAttribute ("value", meta.getElementsByTagName ("wcoverage")[0].textContent);
				input[4].setAttribute ("value", nodeList2CommaLista (meta.getElementsByTagName ("folksonomia")));

				// Non puo' essere un'expression originale
				var select = dom.getElementsByTagName ("select")[0];
				select.removeChild (select.getElementsByTagName("option")[0]);

				// Copia edescription
				var copiaDescrizione = dom.createTextNode (meta.getElementsByTagName("edescription")[0].textContent);
				dom.getElementsByTagName("textarea")[0].appendChild (copiaDescrizione);

				// Copia contenuto scheda
				var contenutiScheda = cm.get("scheda").getElementsByTagName ("body")[0].childNodes;
				var stringone = "";
				for (var i = 0; i < contenutiScheda.length; i++) {
					stringone += xs.serializeToString (contenutiScheda[i]);
				}
				dom.getElementsByTagName("textarea")[1].appendChild (dom.createTextNode (stringone));


				cm.clear ("scheda", "errore", "response");
				cm.set (dom);
				cm.redraw ("messaggio");
				window.document.title="Rispondi a un precedente intervento";
			},
			function (req){	
				assert (req.responseXML != null, "UILoadSaveDerivedForm: impossibile caricare la form di salvataggio!");
			});
	am.get ();
}



function UISendSave () {
	if (checkMetadati() && checkEmptyes())
		createAndPost(isNew);
	/*la create e` andata bene e mi aspetto che venga chiamato l'handler della funzione open dell'oggetto xmlhttprequest*/
}


/*
 * Chiamata da un click su opzioni/layout/skin di un formatter (x)html.
 */
function UIChangeTagFormatter (newDFIndex, newLayout, newSkin) {
	assert (newDFIndex in df, "changeFormatter: newDFIndex errato (" + newDFIndex + ")");

	curDF = newDFIndex;
	df[curDF].change (newLayout, newSkin);

	cm.redraw();
}


/**
 * Chiamata da un click su opzioni/layout/skin di un formatter binario.
 */
function UISaveBinDocument (dfIndex, layout, skin) {
	var urlDOM;

	assert (dfIndex in df, "changeFormatter: newDFIndex errato (" + dfIndex + ")");
	cm.popupSaveBin (dfIndex, layout, skin);
}


/**
 * Chiamata da un click sul pulsante di invio della query e dai click sui
 * metadati.
 * Si occupa di inviare la query ai DataSource e di visualizzarne il risultato
 * @param {Object} queryString Query da fare ai DataSource
 */
function UISendQuery (queryString) {

	dr = new devilResponse (function () {
					if (dr.isSoLonely ())
						UILoadScheda (dr.getSingleEid ());
					else{
						if(dr.bedIsTooBigWithoutYou())
							dr.visualBed();
						else
							dr.getPage(0);	
					}	
				});
	if(document.getElementById("scremaRevisioni")!=null)
		dr.amIEvilSoScrema(document.getElementById("scremaRevisioni").checked);			
	for (var i = 0; i < ds.length; i++)
		ds[i].query (queryString,
				disableAndPutPirulinoOnSubmitButton,
				dr.addQueryResult,
				dr.addQueryResult);
}

/**
 * Si occupa di reperire una scheda e di visualizzarla
 * @param {Object} eidentifier Id della scheda da reperire
 */
function UILoadScheda (eidentifier) {
	var am = new AjaxManager (eidentifier,
			null,
			function (req) {
				cm.clear ("scheda", "errore", "response", "messaggio");
				/** Ok, devo prendere atto della realtà... Così com'è, Poliwiki non funzia col WI... Colpa del messaggio e del protocollo ;)
				workInspector.drawAnalysis(document.importNode(req.responseXML.getElementsByTagName("metadati")[0],true));
				**/
				cm.set (req.responseXML);
				cm.set(getReplyButton());
				cm.redraw("scheda","messaggio");
				window.document.title=cm.get("scheda").getElementsByTagName("etitle")[0].textContent;
			},
			catchErrorDS);
	am.get();
}

function UIChangePirulo(num)
{
	waitingPirulGif = waitingGifs[num];

}

/**
 * Carica l'home page
 */
function UILoadHome(){
	var url = (dirSpecials + "/home.xhtml");
	var am = new AjaxManager(url,
			null,
			function (req){
				cm.clear ("scheda", "errore", "response");
				cm.set (req.responseXML);
				cm.redraw ("messaggio");
				window.document.title="Poliwiki";
			},
			function (req){	
				assert (req.responseXML != null, "UILoadSaveForm: impossibile caricare la home!");
			});
	am.get ();
}

/**
 * Carica le statistiche
 */
function UILoadStats(){
	if (arguments.length == 0) {
		emptyCorniceAndPutScapoccioneInDaFace(null);
		setTimeout('UILoadStats(1)', 2000);
	}
	else {
		var url = (dirSpecials + "/statistiche.xhtml");
		var am = new AjaxManager(url, null, function(req){
			cm.clear("scheda", "errore", "response");
			cm.set(req.responseXML);
			cm.redraw("messaggio");
			window.document.title = "Poliwiki";
			
		}, function(req){
			assert(req.responseXML != null, "UILoadSaveForm: impossibile caricare la preziosissime statistiche!");
		});
		am.get();
	}
}

/**
 * Carica il logo!! :D
 */
function UILoadCredits(){
	var url = (dirSpecials + "/credits.xhtml");
	var am = new AjaxManager(url,
			null,
			function (req){
				cm.clear ("scheda", "errore", "response");
				cm.set (req.responseXML);
				cm.redraw ("messaggio");
				window.document.title="Poliwiki";
			},
			function (req){	
				assert (req.responseXML != null, "UILoadSaveForm: impossibile caricare l'imperdibile nostra immagine!");
			});
	am.get ();
}

/**
 * Carica la pagina d'aiuto all'utente
 */
function UILoadHelp(){
	var url = (dirSpecials + "/aiuto.xhtml");
	var am = new AjaxManager(url,
			null,
			function (req){
				cm.clear ("scheda", "errore", "response");
				cm.set (req.responseXML);
				cm.redraw ("messaggio");
				window.document.title="Poliwiki";
			},
			function (req){	
				assert (req.responseXML != null, "UILoadSaveForm: impossibile caricare l'indispensabile aiuto alla vostra navigazione!");
			});
	am.get ();	
}



/**
 * Crea un "dom messaggio" col simpatico bottone di "Reply"
 * @return {Object} DOM-messaggio creato
 */
function getReplyButton(){
	ripy= createDOM("","");
	mesg=ripy.createElement("messaggio");
	ripy.appendChild(mesg);
	dvwrp=ripy.createElement("div");
	mesg.appendChild(dvwrp);
	btt=ripy.createElement("button");
	dvwrp.appendChild(btt);
	btt.setAttribute("onclick","UILoadSaveDerivedForm()");
	img=ripy.createElement("img");
	btt.appendChild(img);
	img.setAttribute("src","http://ltw0807.web.cs.unibo.it/df/xhtml/img/reply.png");
	img.setAttribute("alt","Scrivi intervento correlato");
	
	return ripy;
}
